package com.pai4j.aigc.llm.service;

import org.springframework.stereotype.Component;

@Component
public class TokenEstimator {
    /**
     * 估算文本的token数量
     * 该方法通过文本长度来估算token数量，按照每4个字符约等于1个token的比例计算
     *
     * @param text 需要估算token数量的文本，可以为空或null
     * @return 估算的token数量，最小值为1
     */
    public int estimateTokens(String text) {
        // 处理空值情况，空文本返回0个token
        if (text == null || text.isEmpty()) return 0;

        // 获取文本长度并计算估算的token数量
        // 按照每4个字符约等于1个token的比例计算，并向上取整
        int len = text.length();
        int tokens = (int) Math.ceil(len / 4.0);

        // 确保至少返回1个token（除非输入为空）
        return Math.max(tokens, 1);
    }

}
